/*
 * Created on Jan 5, 2004
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
package littlecyberwar.model;

import java.awt.geom.AffineTransform;

/**
 * @author Milton  Soong
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public interface CmdFacade {
	/**
	   * For internal Commands, we need to keep track of the old location (since
	   * We might have to undo or redo). Need to create a InternalCmdToken
	   * and add that to the queues.
	   * 1. add to internal queue
	   * 2. add to backing store (if present)
	   */
	public abstract void addCmd(Command cmd, AffineTransform oldPosition);
	/**
	   * This call will return the previous position
	   * This will only be called through the Internal Facade (one can not undo someone else's cmd)
	   * This call will delegate the task to the backingStore to return a new Command that'll
	   * over-turn the last command.
	   *
	   * Depending on subclass, this might involve modification to the MODEL.
	   */
	public abstract Command backward();
	/**
	   * This will move the current comamnd forward (if it's cycling forward), or
	   * Stop at the last element (in case of redo).
	   *
	   * Depending on subclass, this might involve modification to the MODEL.
	   */
	public abstract Command forward();
}